﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.OleDb;
using DTO;
using DAO;
using BUS;
using Microsoft.Windows.Controls;

namespace QL_xxx
{
	/// <summary>
	/// Interaction logic for QLDatPhong_View.xaml
	/// </summary>
	public partial class QLDatPhong_View : UserControl
	{
        private List<PhieuDatPhongDTO> listPhieuDat;
		public QLDatPhong_View()
		{
			this.InitializeComponent();
		}

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            
            RadChuaNhanPhong.IsChecked = true;
            LoadGrid();
        }

        private void LoadGrid()
        {
            btnSua.IsEnabled = false;
            btnXoa.IsEnabled = false;
            btnNhanPhong.IsEnabled = false;
            try
            {
                
                if (RadChuaNhanPhong.IsChecked == true)
                    listPhieuDat = PhieuDatPhongBUS.LayDSPhieuDatPhong(-1, null, 0);// lay ds chua nhan phong
                else
                    if (RadDaNhanPhong.IsChecked == true)
                        listPhieuDat = PhieuDatPhongBUS.LayDSPhieuDatPhong(-1, null, 1);//lay ds da nhan phong;
                    else
                        listPhieuDat = PhieuDatPhongBUS.LayDSPhieuDatPhong();
            }
            catch
            {
            }
            if (listPhieuDat != null && listPhieuDat.Count > 0)
            {
                GridPhieuDatPhong.ItemsSource = listPhieuDat;

                GridPhieuDatPhong.Columns[1].Header = "Tên khách hàng";
                GridPhieuDatPhong.Columns[3].Header = "Tên loại phòng";
                GridPhieuDatPhong.Columns[4].Header = "Thời gian đặt";


                GridPhieuDatPhong.Columns[0].Visibility = Visibility.Hidden;
                GridPhieuDatPhong.Columns[2].Visibility = Visibility.Hidden;
                GridPhieuDatPhong.Columns[5].Visibility = Visibility.Hidden;

                GridPhieuDatPhong.Columns[1].Width = GridPhieuDatPhong.ActualWidth / 3;
                GridPhieuDatPhong.Columns[3].Width = GridPhieuDatPhong.ActualWidth / 3;
                GridPhieuDatPhong.Columns[4].Width = GridPhieuDatPhong.ActualWidth / 3;
            }
            else
            {
                GridPhieuDatPhong.ItemsSource = null;
            }
        }

        private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            try
            {
                GridPhieuDatPhong.Columns[2].Width = GridPhieuDatPhong.ActualWidth / 4;
                GridPhieuDatPhong.Columns[3].Width = GridPhieuDatPhong.ActualWidth / 4;
                GridPhieuDatPhong.Columns[4].Width = GridPhieuDatPhong.ActualWidth / 4;
                GridPhieuDatPhong.Columns[5].Width = GridPhieuDatPhong.ActualWidth / 4;
            }
            catch
            {
            }
        }

        private void btnThem_Click(object sender, RoutedEventArgs e)
        {
            LapPhieuDatPhong lp = new LapPhieuDatPhong();
            lp.onDatPhongThanhCong += new OnLapPhieuDatPhongThanhCong(lp_onDatPhongThanhCong);
            lp.ShowDialog();
        }

        void lp_onDatPhongThanhCong()
        {
            LoadGrid();
        }

        private void Rad_Checked(object sender, RoutedEventArgs e)
        {
            LoadGrid();
        }

        private void GridPhieuDatPhong_AutoGeneratingColumn(object sender, Microsoft.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
        {
            if (e.PropertyType == typeof(DateTime))
            {
                DataGridTextColumn dataGridTextColumn = e.Column as DataGridTextColumn;
                if (dataGridTextColumn != null)
                {
                    dataGridTextColumn.Binding.StringFormat = "{0:dd/MM/yyyy}";
                }
            }
        }

        private void btnSua_Click(object sender, RoutedEventArgs e)
        {
            PhieuDatPhongDTO phieu = (PhieuDatPhongDTO)GridPhieuDatPhong.SelectedItem;
            SuaPhieuDatPhong s = new SuaPhieuDatPhong(phieu.MaPhieuDatPhong);
            s.onSuaThanhCong += new OnSuaPhieuDatPhongThanhCong(s_onSuaThanhCong);
            s.ShowDialog();
        }

        void s_onSuaThanhCong()
        {
            LoadGrid();
        }

        private void GridPhieuDatPhong_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (GridPhieuDatPhong.SelectedIndex != -1)
            {
                btnSua.IsEnabled = true;
                btnXoa.IsEnabled = true;
                btnNhanPhong.IsEnabled = true;
            }
            else
            {
                btnSua.IsEnabled = false;
                btnXoa.IsEnabled = false;
                btnNhanPhong.IsEnabled = false;
            }
        }

        private void btnXoa_Click(object sender, RoutedEventArgs e)
        {
            PhieuDatPhongDTO phieu = (PhieuDatPhongDTO)GridPhieuDatPhong.SelectedItem;
            if (MessageBoxResult.Yes == MessageBox.Show("Bạn có chắc xóa, xóa phiếu đặt phòng sẽ dẫn tới xóa hết các thông tin liên quan!", "Cẩn thận", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No))
            {
                if (PhieuDatPhongBUS.XoaPhieuDatPhong(phieu.MaPhieuDatPhong))
                {
                    MessageBox.Show("Xong");
                    LoadGrid();
                }
                else
                    MessageBox.Show("Lỗi chưa xác định, xin liên hệ nhà cung cấp");
            }
        }

        private void btnNhanPhong_Click(object sender, RoutedEventArgs e)
        {
            PhieuDatPhongDTO phieu = (PhieuDatPhongDTO)GridPhieuDatPhong.SelectedItem;
            if (MessageBoxResult.Yes == MessageBox.Show("Bạn có chắc muốn ghi nhận khách hàng đã nhận phòng này!", "Thông báo", MessageBoxButton.YesNo, MessageBoxImage.Information, MessageBoxResult.No))
            {
                PhieuDatPhongDTO temp = phieu.Clone();
                temp.DaNhanPhong = true;
                if (PhieuDatPhongBUS.SuaPhieuDatPhong(temp) == PhieuDatPhongBUS.ThanhCong)
                {
                    MessageBox.Show("Xong");
                    LoadGrid();
                }
                else
                    MessageBox.Show("Lỗi chưa xác định, xin liên hệ nhà cung cấp");
            }
        }
	}
}